package aiku.numericalcontroloa.Service.FinanceManagement;

import aiku.numericalcontroloa.Base.Utils.Result;
import aiku.numericalcontroloa.Model.Dto.DevicesDto;
import aiku.numericalcontroloa.Model.Dto.OrderManagement.OrderBillingDto;
import aiku.numericalcontroloa.Model.Dto.PaymentBillingDto;

import java.util.List;
import java.util.Map;

/**
 * 财务服务层接口
 * @Author 黄广庭
 * @Date 2024/6/10 21:06
 */
public interface FinanceService {

    /**
     * 获取订单账单列表
     * @param orderBillingDto
     * @return
     */
    Result getBillingList(OrderBillingDto orderBillingDto);

    /**
     * 获取已支付采购/报销账单列表
     * @param paymentBillingDto
     * @return
     */
    Result getPaymentBillingList(PaymentBillingDto paymentBillingDto);

    /**
     * 获取供应商账单
     * @param paymentBillingDto
     * @return
     */
    Result getSupplierBilling(PaymentBillingDto paymentBillingDto);

    Map<Integer, List<PaymentBillingDto>> getSupplierBillingByIds(List<String> ids);

    /**
     * 供应商月结账单付款
     * @param paymentBillingDto
     * @return
     */
    Result paymentBillingDto(PaymentBillingDto paymentBillingDto);

    /**
     * 获取报销账单
     * @param paymentBillingDto
     * @return
     */
    Result getExpenseBilling(PaymentBillingDto paymentBillingDto);

    /**
     * 报销账单付款
     * @param paymentBillingDto
     * @return
     */
    Result paymentExpenseBilling(PaymentBillingDto paymentBillingDto);

    /**
     *
     * @param devicesDto
     * @return
     */
    Result calculatingProfit(DevicesDto devicesDto);
}
